
// Promise.all 接受一个Promise对象的数组，返回一个新的Promise。

const { error } = require("console");
const { userInfo } = require("os");



// 当所有的 Promise 都被解决时，返回的 Promise 状态为 fulfilled，值是一个包含所有 Promise 解决值的数组。如果任何一个 Promise 被拒绝，返回的 Promise 状态为 rejected，原因是第一个被拒绝的 Promise 的原因。


// 下面是一个使用 Promise.all 的完整案例，模拟并行获取用户数据、订单数据和产品数据的过程：

// 场景描述:

// 假设我们有一个电商系统，需要同时从服务器获取用户信息、订单信息和产品信息。我们希望等所有数据都获取成功后，再进行下一步处理。

// 模拟异步获取用户信息
function getUserInfo(userId) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('获取用户信息');
            resolve({ userId, name: 'John Doe' })
        }, 1000);
    })
}

// 模拟异步获取订单信息
function getOrderInfo(orderId) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('获取订单信息');
            resolve({ orderId, total: 100 })
        }, 1500);
    })
}

// 模拟异步获取产品信息
function getProductInfo(productId) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('获取产品信息');
            resolve({ productId, name: 'Laptop' })
        }, 2000);
    })
}


// 使用Promise.all 并行处理
const userId = 1
const orderId = 101
const productId = 202

Promise.all([getUserInfo(userId), getOrderInfo(orderId), getProductInfo(productId)])
    .then((results) => {
        const [userInfo, orderInfo, productInfo] = results
        console.log('用户信息:', userInfo);
        console.log('订单信息:', orderInfo);
        console.log('产品信息:', productInfo);
    })
    .catch((error) => {
        console.error('获取信息失败:', error);

    })